Основы линейной алгебры
Системы линейных алгебраических уравнений
Основные определения
Системой линейных алгебраических уравнений называется система вида
где числа – коэффициенты системы, числа – свободные члены, – неизвестные.
Чтобы решить систему линейных уравнений, ее необходимо сначала записать в матричной форме:
где – матрица коэффициентов системы (матрица системы, основная матрица):
– вектор-столбец неизвестных:
– вектор-столбец свободных членов:
Расширенной матрицей системы называется матрица системы, дополненная справа столбцом свободных членов.
-
Решением системы называется значений неизвестных, при подстановке которых в уравнения все уравнения системы обращаются в верные равенства.
-
Система уравнений называется совместной, если она имеет хотя бы одно решение, и несовместной, если она не имеет решений.
-
Определитель основной матрицы называется определителем системы и обозначается .
-
Система уравнений называется невырожденной, если , и вырожденной, если .
Система линейных уравнений называется однородной, если все ее свободные члены равны нулю.
Однородная система всегда совместна. Одно из ее решений – нулевое (тривиальное) решение.
Для того, чтобы система линейных однородных уравнений с неизвестными имела ненулевые решения, необходимо и достаточно, чтобы ее определитель был равен нулю, т.е. . В этом случае система имеет бесконечное множество решений.
Пример. Запишем в матричной форме следующую систему линейных уравнений:
Для этого перенесем слагаемые с неизвестными в левые части уравнений, а свободные члены – в правые части. Упорядочим слагаемые с неизвестными по возрастанию их номеров, т.е. сначала должно идти слагаемое с , затем – с и, наконец, с . Получим:
Мы видим, что в первом уравнении отсутствует неизвестная , а во втором уравнении – . Добавим в уравнения отсутствующие неизвестные с коэффициентами, равными 0. Если в уравнении присутствует неизвестная, коэффициент перед которой явно не указан, то он равен 1. Таким образом, система уравнений проибретает вид:
Теперь мы можем записать систему линейных уравнений в матричной форме:
или , где , , .
✏️Задание 1
Дана система линейных уравнений:
Создайте в Engee матрицу коэффициентов при , и . Первый столбец этой матрицы должен состоять из коэффициентов при , второй – из коэффициентов при , третий – из коэффициентов при .
Создайте вектор-столбец свободных членов (чисел, стоящих в правых частях уравнений).
Создайте вектор-столбец , содержащий решение системы: .
Проверьте, что является решением, умножив матрицу на вектор . Результат умножения должен совпадать с вектором .
Решение
A = [2 2 2; 1 1 3; 1 4 1];
B = [2; 5; 10];
X = [-4; 3; 2];
A * X
✏️Задание 2
Дана система линейных уравнений:
Перенесите слагаемые с неизвестными в левые части уравнений, а свободные члены -- в правые части. Упорядочьте слагаемые с неизвестными по возрастанию их номеров. В третьем уравнении отсутствует неизвестная , поэтому добавьте ее в уравнение с коэффициентом 0.
Затем создайте в Engee матрицу системы и вектор-столбец свободных членов.
Создайте вектор-столбец , содержащий решение системы: .
Проверьте, что является решением, умножив матрицу на вектор . Результат умножения должен совпадать с вектором .
Подсказка
После преобразований должна получиться следующая матрица системы:
и вектор свободных членов:
Решение
A = [3 2 -1; 2 -2 4; 1 0 1];
B = [1; -1; 0.5];
X = [-0.75; 2.25; 1.25];
A * X
Решение систем линейных уравнений в Engee
В Engee системы линейных уравнений вида решаются путем вычисления левого частного матриц и с помощью оператора \ (обратная косая черта).
Например, систему уравнений
можно решить следующим образом:
A = [2 2 2; 1 1 3; 1 4 1];
B = [2; 5; 10];
X = A \ B
Сделаем проверку, умножив матрицу на вектор :
A * X
Как мы видим, результат умножения совпадает с вектором .
Пример. Дана система линейных уравнений:
Сначала решим систему графически. Для этого построим на одном графике прямые и и найдем координаты точки пересечения этих прямых.
using Plots;
x = LinRange(-5, 5, 100);
y1 = 6 .- x;
y2 = 2 .+ 3 * x;
plot(x, y1, xlabel="x", ylabel="y", label="y=6-x")
plot!(x, y2, label="y=2+3x")
Из графика видно, что точка пересечения прямых имеет координаты . Это и есть решение данной системы линейных уранений.
Теперь решим эту систему уравнений с помощью оператора \. Для этого сначала преобразуем систему к виду, требуемому для задания матриц и :
A = [1 1; -3 1];
B = [6; 2];
X = A \ B
Сделаем проверку:
A * X
✏️Задание 3
Решите в Engee систему линейных уравнений с помощью оператора \:
и сделайте проверку.
Решение
A = [7 2 3; 5 -3 2; 10 -11 5];
B = [15; 15; 36];
X = A \ B
println("X =");
display(X);
println("A*X =");
display(A * X);
Формулы Крамера
Невырожденная система из n линейных уравнений с n неизвестными имеет единственное решение, которое может быть найдено по формулам Крамера:
где – определитель системы, – определитель, полученный из определителя путем замены первого столбца коэффициентов столбцом свободных членов, – определитель, полученный из путем замены второго столбца коэффициентов столбцом свободных членов и т.д.
Формулы Крамера обычно применяются для решения небольших систем (с двумя или тремя неизвестными).
Пример. Решим по формулам Крамера систему уравнений
using LinearAlgebra;
A = [2 -4 9; 7 3 -6; 7 9 -9]; # матрица системы
D = det(A); # определитель системы
D1 = det([28 -4 9; -1 3 -6; 5 9 -9]); # определитель Delta1
D2 = det([2 28 9; 7 -1 -6; 7 5 -9]); # определитель Delta2
D3 = det([2 -4 28; 7 3 -1; 7 9 5]); # определитель Delta3
X[1] = D1 / D;
X[2] = D2 / D;
X[3] = D3 / D;
print("X =");
display(X);
println("A*X =");
display(A * X); # проверка
Матричный способ решения систем линейных уравнений
Решение невырожденной системы из линейных уравнений с неизвестными может быть найдено матричным способом:
где – матрица, обратная к матрице системы , – вектор-столбец свободных членов.
✏️Задание 4
Решите в Engee матричным способом систему линейных уравнений:
и сделайте проверку.
Подсказка
Обратная матрица в Engee вычисляется с помощью функции inv.
Решение
A = [1 1 -1; 1 -1 1; -1 1 1];
B = [36; 13; 7];
X = inv(A) * B;
println("X =");
display(X);
println("A*X =");
display(A * X);
Исследование совместности систем линейных уравнений
Пусть дана система из линейных уравнений с неизвестными:
Теорема Кронекера–Капелли. Система линейных алгебраических уравнений совместна тогда и только тогда, когда ранг расширенной матрицы системы равен рангу матрицы системы.
Если ранг совместной системы равен числу неизвестных, то система имеет единственное решение. Если ранг совместной системы меньше числа неизвестных, то система имеет бесконечное множество решений.
Пример. Исследуем совместность системы линейных уравнений
Такая система уравнений, в которой уравнений меньше, чем неизвестных, называется недоопределенной.
Для формирования расширенной матрицы воспользуемся функцией cat, которая выполняет конкатенацию (объединение) матриц и содержится в библиотеке LinearAlgebra. Аргументами этой функции являются имена объединяемых матриц и , а также переменная dims, указывающая, по какой размерности будет производится объединение матриц. Значение dims=2 соответствует объединению по горизонтали.
using LinearAlgebra;
A = [2 -3 5 7; 4 -6 2 3; 2 -3 -11 -15]; # матрица системы
B = [1; 2; 1]; # столбец свободных членов
D = cat(A, B; dims=2); # расширенная матрица
println("rank(A)=", rank(A)); # ранг матрицы системы
println("rank(D)=", rank(D)); # ранг расширенной матрицы
Мы видим, что ранг расширенной матрицы равен рангу матрицы системы: . Следовательно, данная система уравнений совместна. Ранг системы (2) меньше числа неизвестных (3), следовательно, система имеет бесконечное множество решений.
✏️Задание 5
Исследуйте в Engee совместность системы линейных уравнений:
Решение
using LinearAlgebra;
A = [3 -5 2 4; 7 -4 1 3; 5 7 -4 -6];
B = [2; 5; 3];
D = cat(A, B; dims=2);
println("rank(A)=", rank(A));
println("rank(D)=", rank(D));
Мы видим, что ранг расширенной матрицы (3) не равен рангу матрицы системы (2), следовательно, система несовместна.
✏️Задание 6
Исследуйте в Engee совместность системы линейных уравнений:
Если система совместна, то найдите ее решение.
Такая система уравнений, в которой уравнений больше, чем неизвестных, называется переопределенной.
Решение
using LinearAlgebra;
A = [2 5 -8; 4 3 -9; 2 3 -5; 1 8 -7];
B = [8; 9; 7; 12];
D = cat(A, B; dims=2);
println("rank(A)=", rank(A));
println("rank(D)=", rank(D));
Мы видим, что ранг расширенной матрицы равен рангу матрицы системы: . Следовательно, данная система уравнений совместна. Ранг системы (3) равен числу неизвестных (3), следовательно, система имеет единственное решение.
Для нахождения этого единственного решения исключим любое уравнение из системы, например, четвертое. И затем решим полученную систему с помощью стандартных средств Engee.
A = [2 5 -8; 4 3 -9; 2 3 -5];
B = [8; 9; 7];
X = A \ B
Метод Гаусса
Метод Гаусса для решения систем линейных алгебраических уравнений состоит из двух этапов. На первом этапе (прямой ход) с помощью элементарных преобразований расширенной матрицы система приводится к ступенчатому (в частности, треугольному) виду:
где , .
На втором этапе (обратный ход) из этой ступенчатой системы последовательно вычисляются неизвестные.
Если ступенчатая система оказывается треугольной (), то исходная система имеет единственное решение. Тогда из последнего уравнения находится , из предпоследнего уравнения – , ..., из первого уравнения – .
Пример. Решим в Engee методом Гаусса систему уравнений
Сначала зададим матрицы и . Объединив их, составим рассширенную матрицу .
A = [1 1 1; 2 0 -3; 6 0 -5];
B = [36; -17; 7];
D = cat(A, B; dims=2)
Исключим неизвестную из второго и третьего уравнений. Для этого ко второй строке расширенной матрицы прибавим первую строку, умноженную на , а к третьей строке прибавим первую строку, умноженную на .
D[2,:] = D[2,:] + D[1,:] * (-2);
D[3,:] = D[3,:] + D[1,:] * (-6);
display(D);
Затем исключим неизвестную из третьего уравнения. Для этого к третьей строке расширенной матрицы прибавим вторую строку, умноженную на .
D[3,:] = D[3,:] + D[2,:] * (-3);
display(D)
Мы привели расширенную матрицу к треугольному виду (все ее элементы ниже главной диагонали равны нулю). Соответствующая система уравнений имеет вид:
Теперь выполним обратный ход метода Гаусса. Из третьего уравнения выразим , из второго – , из перовго – :
X[3] = D[3,4] / D[3,3];
X[2] = (D[2,4] - D[2,3] * X[3] ) / D[2,2];
X[1] = (D[1,4] - D[1,2] * X[2] - D[1,3] * X[3]) / D[1,1];
println("X =");
display(X);
Сделаем проверку:
A * X